/**
 * Funciones que se declaran en el código.
 * @author paco
 */
public class SimboloFuncion extends Simbolo
{
	/**
	 * Constructor
	 * @param nombre Nombre del simbolo.
	 * @param tipo Tipo del simbolo.
	 */
	public SimboloFuncion(String nombre, Tipo tipo)
	{
		super(nombre, tipo);
	}
	
	/**
	 * Traducción del simbolo.
	 * @return traducción.
	 */
	@Override
	public String toString()
	{
		StringBuilder trad = new StringBuilder();
		
		trad.append(".method static public void ");
		trad.append(this.nombre);
		trad.append(" () cil managed\n");
		
		return trad.toString();
	}
	
	/**
	 * Traducción del simbolo.
	 * @return traducción.
	 */
	@Override
	public String toString(String locals)
	{
		StringBuilder trad = new StringBuilder();
		
		trad.append(".method static public void ").append(this.nombre).append(" () cil managed\n{\n");
		trad.append(".entrypoint\n");
		trad.append(".maxstack 10000\n");
		if ( locals.length() != 0 )
		{
			trad.append(".locals(").append(locals).append(")\n");
		}
		
		return trad.toString();
	}
	
	/**
	 * Devuelve el .locals
	 * @return .locals
	 */
	@Override
	public String getLocals()
	{
		return "";
	}
}
